﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataLayer.CLASES_Seguridad_DAO;
using EntityLayer;

namespace BusinessLayer.Clases_Seguridad_BO
{
    public class clsGrupoBL
    {
        clsGrupoDAO obj_GrupoDAO = new clsGrupoDAO();

        public List<T_Grupo> Listar()
        {
            return this.obj_GrupoDAO.Listar();
        }

        public bool Insertar(T_Grupo obj)
        {
            return this.obj_GrupoDAO.Insertar(obj);
        }

        public bool Modificar(T_Grupo obj)
        {
            return this.obj_GrupoDAO.Modificar(obj);
        }

        public bool Eliminar(T_Grupo obj)
        {
            return this.obj_GrupoDAO.Eliminar(obj);
        }

        public List<T_Grupo> listarGrupo2()
        {
            return this.obj_GrupoDAO.listarGrupo2();
        }

        public bool Actualiza_EstadoGrupo(int idGrupo, string estado)
        {
            return this.obj_GrupoDAO.Actualiza_EstadoGrupo(idGrupo, estado);
        }

        public bool EliminarGrupoopcion(int id_grupo)
        {
            return this.obj_GrupoDAO.EliminarGrupoopcion(id_grupo);
        }

        public void GrabarAccesosGrupo(int id, List<int> listOpciones)
        {
            foreach (int idOpcion in listOpciones)
            {
                V_Grupo_Opcion objEntity = new V_Grupo_Opcion();
                objEntity.ID_GRUPO = id;
                objEntity.ID_OPCION = idOpcion;

                this.obj_GrupoDAO.InsertarGrupoOpcion(Convert.ToInt16( id),Convert.ToInt16 ( idOpcion));
            }
        }

        public int GrabarGrupo(T_Grupo entity, List<int> listOpciones)
        {
            int id = 0;
            try
            {
                obj_GrupoDAO.Insertar(entity);
                id = obj_GrupoDAO.Listar().Max(x => x.ID_GRUPO);

                this.GrabarAccesosGrupo(id, listOpciones);
                return id;
            }
            catch (Exception ex)
            {
                return 0;
            }
        }

        public List<T_Grupo> listarAccesosUsuarios()
        {
            return this.obj_GrupoDAO.listarAccesosUsuarios();
        }

        public List<T_Usuario_Grupo> listarUsuario_Grupo()
        {
            return this.obj_GrupoDAO.listarUsuario_Grupo();
        }
        //public int ObtenerIdGrupoMax() {
        //    return   this.obj_GrupoDAO.ObtenerIdGrupoMax();
        //}


    }
}